Python中如何把两个list合并,并按从小到大顺序排列? |
您所在的位置:网站首页 › 列表合并 python › Python中如何把两个list合并,并按从小到大顺序排列? |
本题分为两个部分:一个是list的合并,一个是用while loop循环将合并后的数组从小到大进行排序——排序问题。 1. List的合并:list的合并其实非常简单,只需要用“+”号对两个数组进行相加,另一个数组就会被加到前一个数组的末端,如代码: list1 = [7,3,10,12,5,1,2] list2 = [4,6,11] list3 = list1 + list2 print(list3)最后输出的结果就会是: 简单相加,即可轻松完成两个列表的合并。 2.While loop的冒泡排序法:本题其实最大的难点在于此,与普通的题目不同的是,本题题主所要求的排序,必须要使用While loop循环。 用来排序的算法有很多:冒泡排序、选择排序、插入排序等。 在这里我们选择了新手最常掌握的冒泡排序法: 冒泡排序法又叫交换排序法,每次会将相邻的两个数进行比较,如果这两个数不符合比较条件,则将其位置进行交换。 举个例子: 3,4,2,1 四个数 算法先将3、4进行比较,3 list3[i+1]: a = list3[i] list3[i] = list3[i+1] list3[i+1] = a 首先我们判断该数list3[i]与后一个数list3[i+1]的大小,若该数list3[i]大于后一个数list3[i+1],则开始进行交换: 我们需要先将该数list3[i]的值赋给一个新的变量,以保留原有的值。2. 再将list3[i+1]的值赋给list3[i],此时的list3[i]便成了小的数字。 3. 然后把原有的数值(较大数),赋给list3[i+1],交换便完成了。 接着便是这一趟的循环比较部分,按题主要求使用While循环: i = 0 while i list3[i+1]: a = list3[i] list3[i] = list3[i+1] list3[i+1] = a i += 1于是在这,我们为刚刚上方的交换代码套上了一层循环。 可以看到,我们声明了一个为0的i变量,用于限制循环的次数,因为有n个数,我们只需要进行n-1次比较就够了 因此此处写的是i < len(list3)-1: 而到这里,我们其实只完成了一趟比较,把当前最大的一个数排到了最后,因此我们还需要再进行几次比较。 多趟循环比较: j = 0 while j看看最后输出的结果: 接下来是排序部分: 我们在极客战记内随机定义两个List,在每次循环开始时,加入了一段hero.say()的输出语句,输出目前正常执行的操作。 代码如下: 在第一层循环前加一个输出,看看现在是第几趟排序 在第二层循环的开始加一个输出,看看目前是第几次排序,并查看排序的结果。 输出结果如图: 可以从图中发现,每一次循环,都将最大的数12往后挪了一次,还可看见其中第三第四次排序没有比较出结果,因此没有任何输出,利用在代码中插入输出语句,代码的运行过程清晰可见,更有助于理解算法以及修改代码。 关于代码调试,我们也有一篇文章专门讲解了新手常用的代码调试方法: 因此,题主所需的完整代码如下: list1 = [7,3,10,12,5,1,2] ##随机定义了两个列表 list2 = [4,6,11] list3 = list1 + list2 ##列表的合并 j = 0 while j |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |